import axios, { AxiosInstance, AxiosInterceptorManager, AxiosPromise, AxiosRequestConfig, AxiosResponse } from 'axios';

export type HttpResponse<T = any> = {
    code: number
    errMsg: string
    data: T
}

const http = axios.create({
    baseURL: '/api',
    timeout: 10000,
})
http.interceptors.request.use((config: AxiosRequestConfig) => {
    // 读取缓存

    // 取消请求
    // console.dir(axios.CancelToken.source());

    // 添加token


    return config
}, (err: any) => {
    if (!window.navigator.onLine) {
        return -1
    }

    return Promise.reject(err)
})
http.interceptors.response.use((res: AxiosRequestConfig) => {
    if (res.data.code) {
        console.error(res.data.code, res.data.errMsg)
        return null;
    }

    // 加密

    // 加入缓存 设置过期时间

    return res.data
}, (err: any) => {
    if (!window.navigator.onLine) {
        return -1
    }

    return Promise.reject(err)
})

export default http;